#ifndef USR_INC_H
#define USR_INC_H

/*-----------------------------------------------------------
 * 头文件
 *----------------------------------------------------------*/
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "stdlib.h"

#include "main.h"

#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#include "cmsis_os2.h"

#include "drv_bsp_uart.h"
#include "drv_bsp_fdcan.h"
#include "drv_pid.h"
#include "sCurve.h"
#include "drv_algorithm.h"
#include "drv_nrf.h"
#include "drv_kalman.h"

#include "toss.h"
#include "dribble.h"
#include "chassis.h"
#include "aim.h"
#include "battle.h"
#include "radar.h"
#include "nrf.h"

/*-----------------------------------------------------------
 * RTOS句柄
 *----------------------------------------------------------*/
extern osMessageQueueId_t pidArgsQueueHandle;

extern osMessageQueueId_t tossCmdQueueHandle;

extern osMessageQueueId_t tossStrokeQueueHandle;

extern osMessageQueueId_t dribbleCmdQueueHandle;

extern osMessageQueueId_t locaterMsgBoxHandle;

extern osMessageQueueId_t joyMsgQueueHandle;

extern osMessageQueueId_t chassisJoyVelMsgBoxHandle;

extern osMessageQueueId_t chassisPointVelMsgBoxHandle;

extern osMessageQueueId_t chassisYawVelMsgBoxHandle;

extern osMessageQueueId_t chassisCmdQueueHandle;

extern osMessageQueueId_t radarLocHandle;

extern osMessageQueueId_t chassisPointCmdQueueHandle;

extern osMessageQueueId_t chassisYawCmdQueueHandle;

extern osMessageQueueId_t aimModeQueueHandle;

extern osMessageQueueId_t shootArgsQueueHandle;

extern osMessageQueueId_t battleCmdQueueHandle;

extern osMessageQueueId_t keyCmdQueueHandle;

extern osMessageQueueId_t chassisActVelBoxHandle;

/*-----------------------------------------------------------
 * 初始化函数
 *----------------------------------------------------------*/
/**
 * @brief 初始化所有底盘相关的实例
 */
void ALL_CHASSIS_Init(void);

/**
 * @brief 初始化NRF
 */
void ALL_NRF_Init(void);

/**
 * @brief 初始化所有串口接收体实例
 */
void ALL_BSP_UART_Init(void);

/**
 * @brief 初始化所有CAN控制器
 */
void ALL_BSP_CAN_Init(void);

#endif //USR_INC_H
